const express = require("express");
const moment = require("moment");
const {cors} = require("./middleware");
const contextListC = require("./Db/collections/contextList")
const app = express();

app.use(cors());// 允许跨域
app.use(express.json());// 接收POST-->请求体格式为application/json-->req.body
app.post("/weibo",async (req,res)=>{
	/*
	思路：伪代码
	1- 接收数据
	2- 判断接收的数据是否在数据库中是否存在
		2-1 存在：给予响应：添加的数据已经存在，请不要重复提交
		2-2 不存在：整理数据，将整理好的数据放置到数据库中，并给予成功的提示
	* */
	try{
		// 接收数据:获取到微博的内容
		const {context} = req.body;
		// 在集合contextList中获取与接收的微博内容相同的文档条数
		const count = await contextListC.count({context});
		if(count===0){
			// 不存在
			await contextListC.insertOne({
				context,
				addTime:moment().format("YYYY-MM-DD HH:mm:ss")
			});
			res.json({
				ok:1,
				msg:"添加成功"
			})
		}else{
			// 存在
			res.json({
				ok:-1,
				msg:"添加的数据已经存在，请不要重复提交"
			})
		}
	}catch (err){
		console.log(err);
		res.json({
			ok:-1,
			msg:"网络连接错误"
		})
	}


})
app.get("/weibo",async (req,res)=>{
	try{
		/*
		* 思路：
		* 1- 接收数据
		* 2- 获取数据
		* 3- 响应数据
		* */
		// 获取数据
		let {pageNo=1,pageSize=3} = req.query;
		pageNo = pageNo/1;
		pageSize = pageSize/1;
		// 页码不允许小于1
		if(pageNo<1) pageNo = 1;

		// 总条数
		const count = await contextListC.count();
		// 求总页数 Math.ceil:向上取整
		let pageSum = Math.ceil(count/pageSize);//
		if(pageSum<1) pageSum = 1;
		if(pageNo>pageSum) pageNo = pageSum;
		const contextList = await contextListC.find({
			sortObj:{
				addTime:-1,// 添加时间的倒序
			},
			limit:pageSize,

			skip:(pageNo-1)*pageSize
		});
		res.json({
			ok:1,
			msg:"获取成功",
			pageSum,
			pageNo,
			contextList
		})

	}catch (err){
		console.log(err);
		res.json({
			ok:-1,
			msg:"网络连接错误"
		})
	}
})
// 根据ID删除微博
app.delete("/weibo/:id",async (req,res)=>{
	try{
		/*
		思路：
		1- 接收参数id
		2- 根据ID进行删除
		3- 响应结果
		* */
		const {id} = req.params;
		await contextListC.deleteOneById(id);
		res.json({
			ok:1,
			msg:"删除成功"
		})

	}catch (err){
		res.json({
			ok:-1,
			msg:"产生异常："+err.message
		})
	}
})
app.put("/weibo/:id/:type",async(req,res)=>{
	try{
		const {id,type} = req.params;
		await contextListC.updateOneById(id,{
			$inc:{
				[type/1===1?'topNum':'downNum']:1
			}
		});
		res.json({
			ok:1,
			msg:"修改成功"
		})
	}catch (err){
		res.json({
			ok:-1,
			msg:"异常"+err.message
		})
	}


})
app.listen(80,()=>{
	console.log("success");
})